perm filename HEL[S,AIL]43 blob
sn#223237 filedate 1976-07-04 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00021 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 β Definition of Terms
C00007 00003 MUMBLE Classes
C00014 00004 MUMBLE Declarations
C00020 00005
C00023 00006 MUMBLE Statements
C00030 00007 MUMBLE Expression Parsers
C00032 00008 MUMBLE Main Expression Parser
C00039 00009 MUMBLE Compile-time type checking productions
C00041 00010 MUMBLE Boolean Expressions
C00043 00011 MUMBLE Leap constructs
C00047 00012
C00052 00013 MUMBLE Loop Statements, array calcs, proc names, etc
C00056 00014 MUMBLE backtracking, memory and loc, record fields
C00060 00015 MUMBLE In-line code
C00063 00016 MUMBLE Conditional Compilation Statements
C00069 00017 MUMBLE Macro DEFINE handling
C00072 00018 MUMBLE print statement
C00073 00019 MUMBLE dynamic procedure binding, etc.
C00078 00020 MUMBLE Error productions
C00083 00021 MUMBLE More error productions
C00091 ENDMK
C⊗;
COMMENT β Definition of Terms
MUMBLE
You shall be sent where no son of man
Or god shall see you again,
With earth behind you, on an eagle's mound,
Facing Hel, for ever sit.
Skirnir's Ride
;
∞ASG LEAPSW 1
∞ASG GLOBSW 1
<SYMBOLS>
; SEMI ← LARW , COMA ) RPRN ( LPRN ∩ INTER ∪ UNION - MINUS { SETO } SETC
[ LBR ] RBR & ANDD ↑ UPRW : COL + PLUS * TIMS / SLSH . DOT ' ASSOC
| VERT ⊗ XOR ≡ EQV < LES > GRE = EQU ≠ NEQ ≥ GEQ ≤ LEQ
∞ INF ε IN ↔ SWAP % PRC @ INDR ? QUES
<TERMINALS>
| I < > = + - [ ] & ↑ : * / . ; ← , ) ( % @ ?
IVB ISV IAR ILB ICN IIT IST ITV IPR STC ICTXT IRC
<RESERVED-WORDS>
RETURN ELSE IN DATUM WHILE DO THEN CASE OF STEP SIMPLE
MUMBLE FOLLOWING WERE INSTALLED FOR EXPORTATION PUPOSES;
NEQ GEQ LEQ SETO SETC SWAP UNION INTER ASSOC LISTO LISTC
LOP COP CVI CVN LENGTH PNAMES PRELOAD_WITH PRESET_WITH BIND BUCKETS
STRING_SPACE SYSTEM_PDL STRING_PDL ARRAY_PDL LIBRARY
SOURCE_FILE LOAD_MODULE NEW_ITEMS REQUIRE NEXT NEEDNEXT VERSION
ALLGLOBAL ILDB IDPB LDB DPB IBP BBPP
UNTIL BEGIN START_CODE QUICK_CODE IF GO TO GOTO COMMENT PROCEDURE ARRAY
REAL SET EXTERNAL OWN VALUE FORTRAN FORWARD END FOR NEW MATCHING
SUCCEED FAIL CONTEXT DONE DIV MOD FIRST SECOND THIRD PUT REMOVE
REMEMBER FORGET RESTORE KILL_SET NULL_CONTEXT SAMEIV IN_CONTEXT
INTEGER BOOLEAN ITEM ITEMVAR STRING INF
SAFE FROM NOT XOR AND OR ABS LABEL INTERNAL REFERENCE
RECURSIVE DEFINE REDEFINE EVALDEFINE EVALREDEFINE ASSIGNC NOMAC CVPS LET
EQV SUCH THAT DELETE PHI NIL ISTRIPLE MAKE ERASE FOREACH
TRUE FALSE NULL LSH ROT LAND LOR LNOT ENTRY ASH
MAX MIN SHORT LIST AFTER BEFORE CVSET CVLIST DELIMITERS REPLACE_DELIMITERS
UNSTACK_DELIMITERS NULL_DELIMITERS
IFC IFCR THENC ELSEC ENDC WHILEC CASEC FORC FORLC DOC OFC STEPC UNTILC CVMS
ALL PROTECT_ACS ASSIGN APPLY
NOW_SAFE NOW_UNSAFE ITEM_START
DECLARATION EXPR_TYPE
GLOBAL SEGMENT_NAME SEGMENT_FILE
MESSAGE
CONTINUE MEMORY LOCATION
SPROUT PROCESSES DEPENDENTS
INITIALIZATION INTERROGATE CAUSE
CHECK_TYPE RESERVED BUILT_IN LEAP_ARRAY
PROPS CLEANUP POLL POLLING_INTERVAL ACCESS
REF_ITEM SETCP SETIP SPROUT_DEFAULTS ERROR_MODES ARG_LIST
RECORD_POINTER RECORD_CLASS NEW_RECORD
NULL_RECORD ANY_CLASS
COMPILER_SWITCHES
PRINT CPRINT
<NON-TERMINAL-SYMBOLS>
PDEC BLAT S SICL LHS FCALL PCALL SE ST BE SF
STID LDAT TR BP SP P SIP IP SIFC EIFC LIP
DS AE PDNO ARDEC E ARID EN CASEX T
DPL ASSDO WHILC ELHS BT FORCA
DOL CRAP OPC LSP BLKFRC
CTRU1 CTRU2 CFLS1 CFLS2 DUMMY NOCOND EOFILE NOMORE
WDPL CDPL FRDPL FLDPL OPPS MPRO
MUMBLE Classes ;
<CLASSES>
@ALGLP ITEM ITEMVAR SET LABEL REAL INTEGER
STRING BOOLEAN LIST KILL_SET CONTEXT
@HEL ITEM ITEMVAR MUMBLE NEW DATA TYPES;
@XO INTERNAL SAFE EXTERNAL OWN RECURSIVE FORTRAN FORWARD SHORT SIMPLE
MATCHING GLOBAL MESSAGE
@VAL REFERENCE VALUE QUES
@UNOPE LNOT ABS + -
@PM + - EQV LAND LOR ⊗
@ASOP ⊗ ' ≡ *
@TD * % / LSH ROT DIV MOD ASH &
@RL < > = ≠ ≤ ≥ MUMBLE RELATIONS;
@MX MAX MIN
@ALG STRING REAL INTEGER BOOLEAN SET LIST CONTEXT
@DCL SET ITEM ITEMVAR LABEL REAL INTEGER STRING LIST CONTEXT
BOOLEAN PROCEDURE INTERNAL SAFE EXTERNAL OWN DEFINE
REDEFINE EVALDEFINE EVALREDEFINE NOMAC
RECURSIVE FORWARD FORTRAN REQUIRE PRELOAD_WITH PRESET_WITH SHORT
LET MATCHING
GLOBAL MESSAGE
PROTECT_ACS SIMPLE CLEANUP SPROUT_DEFAULTS
RECORD_CLASS RECORD_POINTER
@E E BE AE
@IRCC IRC ANY_CLASS IPR
MUMBLE
@SETOP ∩ ∪
;
@REQ PNAMES SYSTEM_PDL STRING_PDL STRING_SPACE ARRAY_PDL
NEW_ITEMS VERSION LIBRARY LOAD_MODULE SOURCE_FILE DELIMITERS
REPLACE_DELIMITERS UNSTACK_DELIMITERS NULL_DELIMITERS
ALLGLOBAL SEGMENT_NAME SEGMENT_FILE
PROCESSES POLLING_INTERVAL BUCKETS ITEM_START ERROR_MODES
COMPILER_SWITCHES
@CALL PCALL FCALL
@LOOP ASSDO FORCA WHILC
@NXT STEP UNTIL WHILE : TO FOR
@END UNTIL END ELSE ;
@IN IN FROM
@OTH ; DO , ) END ELSE UNTIL
@MAKER MAKE ERASE
@PUT PUT REMOVE
@SUCCEED SUCCEED FAIL
@REMEMB REMEMBER FORGET RESTORE
@BEAFT AFTER BEFORE
@TFAL INF NULL TRUE FALSE
@FUNC1 ISTRIPLE LOP CVN LENGTH ILDB LDB
@FUNC2 FIRST SECOND THIRD COP CVI
@FUNCL FIRST SECOND THIRD ISTRIPLE
@CVSET CVSET CVLIST
@PRO1 IDPB DPB IBP
@AR T P BP BT BE
@DC DO ,
@I I IVB ISV IAR ILB ICN IIT IST ITV IPR STC IRC ICTXT
@IARY IAR ILB
@ISTO IVB ISV IST ITV
@IASS IIT ITV
@IALG IVB ISV ICN STC
@FUNC ISTRIPLE FIRST SECOND THIRD LOP COP CVI CVN LENGTH ILDB LDB BBPP
CVSET CVLIST
@IDC IVB ISV IAR ILB ICTXT ICN IIT IST ITV IPR STC
@STA FOR WHILE DATUM MAKE ERASE DONE PUT REMOVE DELETE REMEMBER FORGET RESTORE
MEMORY SUCCEED FAIL PROPS IRC
@EXS ( LNOT ABS + - NOT [
@STCO START_CODE QUICK_CODE
@BEG BEGIN START_CODE QUICK_CODE
@EDN AFTER ARDEC ARID ASSIGNC BBPP BEFORE BEGIN CASE CASEC CASEX CDPL COL COP CVI
CVLIST CVN CVSET DATUM DELETE DOC DPB DPL EIFC ELHS ELSE FCALL FIRST
FLDPL FOR FOREACH FORGET FROM FRDPL IBP IDPB IFC IFCR CTRU1 CFLS1 CTRU2
IN_CONTEXT
CFLS2 IN ILDB ISTRIPLE LARW LDAT LDB LENGTH LHS LIP LOP LSP NEW OF OFC PCALL
PROPS QUICK_CODE REMEMBER REMOVE REQUIRE RESTORE RETURN SECOND SIP
START_CODE STEP STID THEN THENC THIRD TO UNTIL WDPL WHILE WHILEC : [ ↔ ,
PROTECT_ACS ASSIGN APPLY MEMORY SPROUT CAUSE INTERROGATE EXPR_TYPE
PDEC REF_ITEM ARG_LIST IRC REFERENCE PRINT CPRINT
@LCON @EDN AND DATUM IF IN MAX MIN NOT OR
( < > = ≠ ≤ ≥
@EDR DO DOC ELSE ELSEC END ENDC FOR FROM IN OF OFC STEP STEPC THEN THENC TO UNTIL
UNTILC WHILE , ) ] ; @ ( : LISTC } @REQ MESSAGE
@RCON @EDR AND CASE EQV OR > < = ≠ ≥ ≤ - +
@LOWER + - * % ⊗ / & = < > ≤ ≥ ≠ LNOT ABS EQV LAND LOR LSH ROT DIV ASH
MOD MAX MIN
@MKSU NOW_SAFE NOW_UNSAFE
@TERMINAL
MUMBLE JFR 7-4-76 SO CHECK_TYPE(LEAP_ARRAY) WORKS;
@RSTDC RESERVED BUILT_IN LEAP_ARRAY
@RESERVED
@CONS ICN STC
@IDQ IVB ISV IAR ILB IST ITV IPR ICTXT
@IDD @RESERVED @IDQ IIT I IRC
@C1 , ; ) [ ]
MUMBLE
@C2 UNTIL WHILE IF CRAP
@STM SIFC BEGIN START_CODE QUICK_CODE CASEX PDEC ASSDO FORCA WHILC
;
MUMBLE
@GAR GO GOTO FOR WHILE DATUM MAKE ERASE PUT DELETE DONE SUCCEED FAIL
BEGIN IF FOREACH IDPB DPB CASE DO RETURN REMEMBER FORGET RESTORE
DEFINE REDEFINE EVALDEFINE EVALREDFINE NOMAC NEXT NEEDNEXT
GLOBAL LET
;
@SEND END ELSE ; UNTIL
MUMBLE
@LPR NEW RETURN CASEX DELETE ISTRIPLE FIRST SECOND THIRD
LOP COP CVI CVN LENGTH ILDB LDB , PCALL FCALL CVSET CVLIST
PRINT CPRINT
;
@SIP LIP SIP
@THT THEN THENC
@CONBG IFC IFCR WHILEC CASEC FORC FORLC
@DOCA DO DOC
MUMBLE #XJ JFR 7-4-76 ADD IRC SO DECLARATION(record!class name) WORKS;
@LDC IVB ISV IAR ILB IST ITV IPR I IRC
@STEPCA STEP STEPC
@UNTLCA UNTIL UNTILC
MUMBLE
@OFCA OF OFC
;
@CTRUE CTRU1 CTRU2
@CFALSE CFLS1 CFLS2
@EQC LARW EQU
@QEND END ;
@QBEG BEGIN START_CODE QUICK_CODE CASEX
@REFXX REFERENCE REF_ITEM ARG_LIST
MUMBLE Declarations;
<PRODUCTIONS>
BB0: ENTRY →→ EXEC ENTENT SCAN ¬ENT
BEGIN →→ BLAT BEGIN EXEC ENTOUT LPNAME DWN SCAN ¬BDS #Q1
ENT: ; →→ SCAN ¬BB0
ENT0: SG →→ EXEC ENTMAK SCAN ¬ENT1
ENT1: , →→ SCAN ¬ENT0
ENT2: ; →→ SCAN ¬BB0 #Q2
MUMBLE OUTER BEGIN-END PAIR IS ALWAYS A BLOCK! ;
BDS: @BEG STC →→ @BEG EXEC BLNAME SCAN ¬BDS1
BDS1: @BEG SG EXEC BLOCK KLSTG CLRSET ¬DS0 #TRAP
DS: @BEG STC →→ @BEG EXEC BLNAME SCAN ¬DS2
DS2: @BEG @DCL EXEC BLOCK CLRSET ¬DS0 #DS3
DS3: SG EXEC OFFDEF ¬S0
DS0:
@ALGLP EXEC @ALGLP TYPSET SCAN ¬D1
PDEC @VAL →→ PDEC EXEC @VAL VALSET SCAN ¬DS0
@XO SCAN ¬ZDS2
PROCEDURE SCAN ¬TYP
DEFINE →→ EXEC MACOFF DLMPSH DPSHBT ∞∞
SCAN ↑DFR ¬ZDS1
REDEFINE →→ EXEC SETRDF MACOFF DLMPSH DPSHBT ∞∞
SCAN ↑DFR ¬ZDS1
EVALDEFINE →→ EXEC SETEDF DLMPSH DPSHBT SCAN ↑DFR ¬ZDS1
EVALREDEFINE →→ EVALDEFINE EXEC SETRDF ↑EDF ¬ZDS1
NOMAC →→ EXEC MACOFF SCAN ↑NM1 ¬ZDS1
LET →→ EXEC MACOFF TRIGOF SCAN ↑LTR ¬DS0
REQUIRE SCAN ↑RQQ ¬DS0
PRELOAD_WITH →→ EXEC LDYBEG SCAN ↑CONX ¬LW1
PRESET_WITH →→ EXEC LDYSET SCAN ↑CONX ¬LW1
CLEANUP →→ SCAN 2 ¬CLN
PROTECT_ACS →→ SCAN ↑CONX ¬PACL
SPROUT_DEFAULTS →→ SCAN ↑CONX ¬SDSS
BEGIN RECORD_CLASS SCAN ¬RCD
RECORD_POINTER →→ INTEGER SCAN 2 ¬RPD
; →→ SCAN ¬DS0
STC →→ EXEC SCOMM SCAN ¬DS0
@BEG SG EXEC ENDDEC ¬S0 #XXQQ
RCD: @IDD →→ PDEC EXEC RCBIT0 PRDEC RCCREM ∞∞
SCAN ¬PD0 #QRC1
ZDS1: SG SCAN ¬DS0
ZDS2: @XO @DCL →→ @DCL EXEC @XO XOWSET ¬DS0
GLOBAL SG →→ SG EXEC ENDDEC GLBSET ¬S01 #XXQQ
D1: @XO →→ EXEC @XO XOWSET SCAN ¬D1
@ALG @HEL →→ EXEC @HEL HELSET SCAN ¬TYP
@ALG ARRAY →→ ARRAY SCAN ¬D2
@ALGLP SG →→ SG ¬TYP
D2: SG ITEMVAR →→ EXEC HELAR1 SCAN ¬TYP
SG ITEM →→ ARDEC EXEC HELAR2 SCAN ¬DA1
TYP: ARRAY SCAN ¬TYP1
PROCEDURE SCAN ¬TYP1
TYP1: BEGIN PROCEDURE @IDD →→ BEGIN PDEC ∞∞
EXEC KLSET PRDEC SCAN ¬PD0
ARRAY @IDD →→ ARDEC @IDD ∞∞
EXEC STARY ¬DA1
PDEC PROCEDURE @IDD →→ PDEC @IDD ∞∞
EXEC PRSET ¬IDL
IDL: @DCL SCAN ¬QIDC
@IDD →→ EXEC ENTID SCAN ¬IDL1 #Q4
IDL1: , →→ SCAN ¬IDL
; →→ EXEC CLRSET SCAN ¬DS0
PDEC ( →→ PDEC EXEC DFVPV0 SCAN ↑CONX ¬DFVP
PDEC ) →→ PDEC EXEC TWPR2 SCAN ¬PD1 #Q5
PD0: ( →→ EXEC CLRSET SCAN ¬DS0
PDEC SG EXEC TWPR1 ¬PD1 #TRAP
PD1:
RECORD_CLASS PDEC SG →→ PDEC SG ¬RCD1
RECORD_CLASS PDNO SG →→ PDEC SG ¬RCD1
PDEC ; →→ PDEC EXEC ENDPR KOUNT1 SCAN ¬S1
PDNO ; →→ EXEC ENDPR FWUNDO SCAN ¬DS0 #Q7
CLN: IPR , →→ EXEC CLNSET SCAN 2 ¬CLN
IPR ; →→ EXEC CLNSET SCAN ¬DS0
DFVP: SG ) →→ EXEC DFVPV SCAN ¬IDL1 #Q4
RCD1: PDEC [ →→ PDEC SCAN 2 ¬RCD2 #RCD3
RCD2: PDEC IPR ] →→ PDEC EXEC URCHLR SCAN ¬RCD3 #QRC2
RCD3: PDEC ; →→ EXEC ENDRC SCAN ¬DS0 #QRC2
RPD: ( @IRCC →→ EXEC SETIRP @IRCC TWDIRC ∞∞
SCAN 2 ¬RPD1 #QRP1
RPD1: , @IRCC →→ EXEC @IRCC TWDIRC SCAN 2 ¬RPD1
) SG →→ SG ¬D1 #QRP1
PACL: SG , →→ EXEC PACDO SCAN ↑CONX ¬PACL
SG ; →→ EXEC PACDO SCAN ¬DS0 #Q8
SDSS: E ; →→ EXEC SDFLTS SCAN ¬DS0 #XXQQ
RQQ:
REQUIRE @REQ →→ REQUIRE ∞∞
EXEC DEFZRO @REQ RQSET SCAN ¬RQ1
IPR SCAN ¬RQ5
SG ↑CONX ¬RQQQ #TRAP
RQQQ:
E SOURCE_FILE SCAN ¬RQ3
E @REQ →→ EXEC @REQ RQSET SCAN ¬RQ1 #RQQ2
RQQ2:
E MESSAGE →→ EXEC TYPMSG SCAN ¬RQ1 #Q10
RQ1: REQUIRE ; →→ EXEC CLRSET SCAN ↓↓
REQUIRE , →→ REQUIRE SCAN ¬RQQ #Q10
RQ3: REQUIRE E SOURCE_FILE , →→ REQUIRE ∞∞
EXEC REQERR SCAN ¬RQQ
REQUIRE E SOURCE_FILE ; →→ ∞∞
EXEC SRCSWT SCAN ¬RQ4 #Q11
RQ4: SG EXEC SRCCHK ↓↓
RQ5: IPR INITIALIZATION →→ IPR SCAN ¬RQ6
IPR SG →→ IPR EXEC SCNBAK ↑CONX ¬RQQQ #XXQQ
RQ6: [ SCAN ↑CONX ¬RQ7
IPR SG →→ SG EXEC REQINI ¬RQ1 #XXQQ
RQ7: IPR [ E ] →→ EXEC RQINIX SCAN ¬RQ1 #XXQQ
LW1: [ E ] →→ EXEC LDYREP SCAN ↑CONX ¬LW1
LW: E , →→ EXEC LDYNO SCAN ↑CONX ¬LW1
E ; →→ EXEC LDYNO CLRSET SCAN ¬DS0 #Q12
DA0: ARDEC ; SG →→ SG EXEC CLRSET ¬DS0
ARDEC , SG →→ ARDEC SG ¬DA1 #Q13
DA1: PDEC ARDEC SG →→ PDEC SG ¬IDL
DA2: @IDD →→ EXEC ENTARY SCAN ¬DA3 #Q4
DA3: , →→ SCAN ¬DA2
[ →→ SCAN ↑NEX ¬AR0 #Q15
AR0: ARDEC E : E , →→ ARDEC EXEC ARRSUB SCAN ↑NEX ¬AR0
ARDEC E : E ] →→ ARDEC EXEC ARRSUB ARRDEC SCAN 2 ¬DA0 #Q16
LTR: @IDD EXEC LETSET SCAN 2 ¬LT1 #Q4
LT1: SG = @RESERVED →→ EXEC LETENT SCAN ¬LTR1 #XXQQ
LTR1: , →→ EXEC MACOFF SCAN ¬LTR
; →→ EXEC TRIGON SCAN ↓↓ #Q23
MUMBLE Statements;
S0: BLAT BEGIN SG EXEC UINCLL ¬S1
@STCO SG EXEC @STCO CODNIT ¬COD
S1: SG EXEC CAPOLL LSTKCK ¬S01
S01: @IDQ SCAN ¬SID
@STA ¬S1Q
@BEG EXEC DWN SCAN ¬DS
IF SCAN ↑BEX ¬IFQ
@END →→ S @END ¬S9
GO SCAN ¬G1
GOTO →→ GO SCAN ¬G2
FOREACH →→ BLKFRC FOREACH ∞∞
EXEC DWN1 ¬FRC0
GLOBAL →→ EXEC GLBSET SCAN ¬S01
@PRO1 SCAN ↑EXD ¬PROS
CASE SCAN ↑EX ¬CSES
DO →→ DOL EXEC DOLOOP KOUNT1 SCAN ¬S1
RETURN →→ SCAN ¬RT0
NEEDNEXT →→ EXEC NEXTR SCAN ¬S1
NEXT SCAN ¬NXTX
CONTINUE SCAN ¬CTUX
STC →→ EXEC SCOMM SCAN ¬S1
REQUIRE SCAN ↑RQQ ¬S1
CASEX [ SCAN ↑CONX ¬CASD
OPPS BEGIN [ SCAN ↑CONX ¬CASD
@MKSU SCAN 2 ¬MS
PRINT SCAN ¬%PRT
CPRINT SCAN ¬%CPRT
APPLY →→ PCALL APPLY SCAN ¬%EV1
ASSIGN SCAN ¬%BP1
SPROUT SCAN ¬FK
CAUSE SCAN ↑EXD ¬%CS2
INTERROGATE →→ PCALL SCAN ↑EXD ¬%IR2
POLL →→ S EXEC INMAIN EPOLL SCAN ¬S9
ICTXT SCAN 2 ↑EX1 ¬LCEL
SETCP SCAN ¬SIC
SETIP SCAN ¬SIC
ASSIGNC →→ ASSIGNC ↑ASG ¬SS1
I EXEC UNDEC SCAN ¬USID #Q24
SS1: SG SCAN ¬S01 #TRAP
S1Q: FOR SCAN ¬S1
WHILE EXEC WHIL1 KOUNT1 SCAN ↑BEX ¬WHG
DATUM →→ LDAT EXEC GLBST2 SCAN ¬LDA
@MAKER EXEC @MAKER MKSET SCAN ↑EX1 ¬FRG
@PUT SCAN ↑EX1 ¬PT0
DELETE EXEC GLBST2 SCAN ↑EXD ¬DEL
@REMEMB SCAN ¬RFR
PROPS EXEC GLBST2 SCAN ↑EXD ¬SPRP
@SUCCEED →→ S EXEC @SUCCEED SUCCEX SCAN ¬S9
MEMORY SCAN ↑MEMX ¬SID
IRC SCAN ↑RCF ¬SID
DONE SCAN ¬DNEX #XXQQ
NXTX: NEXT STC →→ S EXEC NEXTBN SCAN ¬S9
NEXT SG →→ S SG EXEC DNEXT ¬S9 #XXQQ
DNEX: DONE STC →→ S EXEC DONEBN SCAN ¬S9
DONE SG →→ S SG EXEC DDONE ¬S9 #XXQQ
CTUX: CONTINUE STC →→ S EXEC CONTBN SCAN ¬S9
CONTINUE SG →→ S SG EXEC CNTNUE ¬S9 #XXQQ
RT0: @OTH →→ S @OTH EXEC RESLT1 ¬S9
( →→ RETURN SCAN ↑EX ¬RESL #XXQQ
RESL: RETURN @E ) →→ S EXEC @E ECHK RESULTS SCAN ¬S9 #Q30
G1: GO TO →→ GO SCAN ¬G2
G2: GO ILB →→ S EXEC TRA SCAN ¬S9 #Q32
SID: FOR @ISTO ← →→ FORCA LHS ∞∞
EXEC FORBG TWID10 SCAN ↑NEX ¬FOR1
@ISTO ← →→ LHS EXEC TWID10 SCAN ↑EX ¬STO
@IARY [ →→ ARID EXEC ARYIDX SCAN ↑ARY ¬SID
IPR ( →→ PCALL EXEC RDYCAL SCAN ↑EX ¬PARM
IPR SG →→ S SG EXEC RDYCL1 ISUCL1 PRST ¬S9
ILB : →→ EXEC ENTLAB APOLL KOUNT2 ∞∞
SCAN ¬S1
IST [ EXEC REFINF SCAN ↑EX ¬REP0
@ISTO ↔ SCAN ↑EX ¬STO
I SG ¬USID #XXQQ
S9: SIFC S ELSE EXEC IFLS1 SCAN ¬S1
OPPS S SG →→ SG EXEC ERR105 ¬FUSH
S8: BEGIN S ; →→ BEGIN SCAN ¬S1
SIFC S ELSE S @SEND →→ S @SEND ∞∞
EXEC IFLS2 ¬S9
SIFC S @SEND →→ S @SEND EXEC IFNLS ¬S9
BLAT BEGIN S END →→ S EXEC QREM2 UP2 DONES OKEOF ∞∞
SCAN ¬FIN
BEGIN S END →→ S EXEC QREM2 UP2 SCAN ¬S7
@LOOP S @SEND →→ S @SEND EXEC LOPPS KOUNT1 ¬FR9
DOL S UNTIL EXEC CNFXP SCAN ↑BEX ¬DOLS
CASEX S ; →→ CASEX EXEC CASEMT KOUNT1 SCAN ¬S1
CASEX S END →→ CASEX EXEC CASEMT CASEND SCAN ¬S7
CASEX [ E ] S END →→ CASEX ∞∞
EXEC CASEM1 CASEN1 SCAN ¬S7
CASEX [ E ] S ; →→ CASEX ∞∞
EXEC CASEM1 KOUNT1 SCAN ¬S1
PDEC S ; →→ EXEC PRUP SCAN ¬DS0 #Q34
S7: S STC →→ S EXEC NAMCHK SCAN ¬S9
CASEX STC →→ S EXEC NAMCHK SCAN ¬S9
CASEX SG →→ S SG ¬S9 #S9
FR9: BLKFRC S SG →→ S SG EXEC UP2 ¬S9 #S9
FIN: S STC →→ EXEC NAMCHK OKEOF SCAN ¬FIN1
S SG →→ SG ¬FIN1 #FIN1
FIN1: EOFILE →→ ↓↓
SG →→ EXEC OKEOF SCAN ¬FIN1 #FIN1
MS: @MKSU IAR , →→ @MKSU EXEC @MKSU DOSFTY SCAN 2 ¬MS
@MKSU IAR SG →→ S SG EXEC @MKSU DOSFTY ¬S9 #Q35
MUMBLE Expression Parsers;
EXD: ( →→ SCAN ¬EX #Q36
EX: SG ↑EX1 ¬EX22
EX22: TR SG →→ P SG EXEC ISIT ↑P2 ¬EX22
BE SG →→ E SG EXEC EXPOP ↓↓
SG ↓↓ #TRAP
BEX: SG ↑EX1 ¬BX2
BX2: BE SG ↓↓
E SG →→ BE SG EXEC BOOP ↓↓
TR SG →→ P SG EXEC ISIT ↑P2 ¬BX2 #Q38
CONX: SG ↑EX ¬CX1
CX1: CFLS1 E SG ↓↓
E SG EXEC CHKCON ↓↓ #Q39
NEX: SG ↑EX ¬NEX1 #TRAP
NEX1: ( E @NXT →→ P @NXT EXEC ER40 TWID10 ↑P2 ¬NEX1
( BE @NXT →→ ( BE ) @NXT ∞∞
EXEC ER40 TWID10 ↑BP4 ¬NEX1
SG @E @NXT EXEC @NXT WAIT SCAN ¬NEX2 #NXQ
NEX2: WHILE SG ↑BEX ¬NEX1 #NEX
NXQ: SG ↓↓
MUMBLE Main Expression Parser;
EX1: @IDC SCAN ¬XID
@EXS SCAN ¬EX1
@FUNCL EXEC GLBST2 SCAN ↑EXD ¬RTN
@FUNC SCAN ↑EXD ¬RTN
IF EXEC CHKLEP SCAN ↑BEX ¬EIF
@TFAL →→ P EXEC @TFAL TCON SCAN ¬P2
DATUM EXEC GLBST2 SCAN ↑EDAT ¬XID
{ →→ SIP SCAN ¬BRK1
PHI →→ SP EXEC LPPHI SCAN ¬SF1
NIL →→ SP EXEC STKNIL SCAN ¬SF1
DEPENDENTS →→ SCAN 3 ¬DPS1
NEW EXEC GLBST2 SCAN ¬NW1
LISTO →→ LIP SCAN ¬BRK2
? SCAN 2 ¬IPQ
BIND SCAN 2 ¬IP0
REMOVE ALL →→ REMOVE EXEC REMAST SCAN ¬EX1
PROPS EXEC GLBST2 SCAN ↑EXD ¬PRP
SAMEIV →→ SCAN 6 ¬SIV
REF_ITEM EXEC GLBST2 SCAN 2 ¬RFI
REFERENCE SCAN 2 ¬RFI
GLOBAL →→ EXEC GLBSET SCAN ¬EX1
MESSAGE →→ EXEC MESCL SCAN ¬EX1
MEMORY SCAN ↑MEMX ¬XID
IRC SCAN ↑RCF ¬XID
LOCATION SCAN ¬LOCX
APPLY →→ FCALL APPLY SCAN ¬%EV1
INTERROGATE →→ FCALL SCAN ↑EXD ¬%IR2
ARG_LIST →→ SCAN ¬AGL
I EXEC UNDEC SCAN ¬UXID
CASE EXEC CHKLEP SCAN ↑EX ¬CSEX
@SUCCEED →→ ITV EXEC @SUCCEED SUCCEX ONEITV SCAN ¬XIF
ICTXT SCAN ¬ECEL
NULL_CONTEXT EXEC NLCNXT SCAN ↓↓
IN_CONTEXT SCAN ↑EXD ¬NCXT
CVMS →→ SCAN ↑CV1 ¬CV2
CVPS →→ SCAN ↑CVP1 ¬XID
NEW_RECORD →→ SCAN 3 ¬NRCD
NULL_RECORD →→ IVB EXEC NLLREC SCAN ¬XID
DECLARATION →→ SCAN ↑CV1 ¬DL1
EXPR_TYPE SCAN ¬DE1
CHECK_TYPE →→ EXEC SPRZER SCAN ¬CK0 #Q41
DE1: ( →→ EXEC DCLBEG SCAN ↑EX1 ¬DE2
DE2: EXPR_TYPE @E ) →→ ICN EXEC @E ECHK DCLEND DCLNT1 ∞∞
SCAN ¬XID #Q114
DL1: @LDC →→ ICN EXEC DCLNT2 SCAN ¬DL2 #Q107
DL2: ) →→ SCAN ¬XID #XXQQ
CV1: ( →→ EXEC MACOFF SCAN ↓↓
CV2: I →→ STC EXEC STCAT SCAN ¬CV3 #XXQQ
CV3: ) →→ SCAN ¬XID #Q106
CVP1: ( →→ EXEC INTSCN SCAN ¬CVP2 #Q119
CVP2: ICN →→ STC EXEC CVPFRM SCAN ¬CVP3 #Q120
CVP3: ) →→ SCAN ↓↓ #XXQQ
XID: @EDN @IALG @EDR →→ @EDN E @EDR ↓↓
@ISTO ← ¬XSTO #XIE
XSTO: ICTXT COL @ISTO ← ¬XST1 #XST2
XST1: @IALG SG →→ E SG ↓↓
@IASS SG →→ AE SG EXEC STITM ↓↓
IST SG →→ AE SG EXEC STSET ↓↓ #Q115
XST2: @ISTO ← →→ ELHS EXEC TWID10 SCAN ↑EX ¬ESTO
XIE:
@IARY [ →→ ARID EXEC ARYIDX SCAN ↑ARY ¬XID
ICTXT COL @I SG ¬XST1
@IALG SG →→ P SG ¬P2
XIF:
@IASS SG →→ IP SG EXEC STITM ¬IP2
IST SG →→ SP SG ¬SF0
IPR ( →→ FCALL EXEC RDYCAL SCAN ↑EX ¬PARM
@CALL @IDC @OTH →→ @CALL E @OTH ↓↓
IPR SG →→ P SG EXEC RDYCL1 ISUCL1 TYPR1 ¬PAM2
ICTXT SG ¬ECEL
@REMEMB IAR @EDR →→ @REMEMB E @EDR ↓↓
IN_CONTEXT IAR @EDR →→ IN_CONTEXT IAR @EDR ↓↓
NEW @IARY ) ↓↓
REF_ITEM @IARY ) ↓↓
I SG ¬UXID #Q42
NW1: ( →→ SCAN ↑EX ¬NW2
NEW SG →→ IP SG EXEC NEWNOT ¬IP2
NW2: NEW SG ) →→ IP EXEC NEWART SCAN ¬IP2 #Q43
P2: @LCON P @RCON →→ @LCON E @RCON ¬E2
P ↑ SCAN ¬EX1
P [ →→ STID EXEC SVSTR TWID10 SCAN ↑NEX ¬BSTR
E @PM P SG →→ E @PM T SG ¬T2
@UNOPE P SG →→ P SG EXEC @UNOPE UNARY ¬P2
P ↑ P SG →→ P SG EXEC EXPON ¬P2
T1: T @TD P SG →→ T SG EXEC @TD TIMDIV ¬T2
T2: @AR @TD →→ T @TD SCAN ¬EX1
EN1: E @PM @AR SG →→ E SG EXEC @PM PLUSM ¬E2
@AR SG →→ E SG ¬E2 #XXQQ
E2: E @PM SCAN ¬EX1
@EDN E @EDR ↓↓
@EDN E @I ↓↓
MUMBLE PREVIOUS FOR BENEFIT OF START_CODE, WHICH IS ONLY CONSTRUCT
IN SAIL WHICH IS NOT OPERATOR GRAMMAR-LIKE (THEREFORE
I'M SAFE?) (DCS -- 8/19/70);
( E ) →→ P EXEC TWID10 SCAN ¬P2
E @MX E SG →→ E SG EXEC @MX MAXMIN ¬E2
E @MX SCAN ¬EX1 #BX1
RFI: SG ( VALUE →→ SG EXEC RFVAL SCAN ↑EX ¬RF0
SG1 ( SG2 →→ SG1 SG2 EXEC RFZERO ↑EX ¬RF0 #Q36
RF0: REF_ITEM @E ) →→ IP EXEC @E ECHK RFIMAK SCAN ¬IP2
REFERENCE @E ) →→ IVB EXEC @E ECHK RFNCDO SCAN ¬XID
ARG_LIST @E @EDR →→ @EDR IP ∞∞
EXEC @E ECHK RFTEMP RFIMAK ¬AGL4 #QRFI
AGL: ( →→ LIP SCAN ¬AGL1 #XXQQ
AGL1: LIP ) →→ SP EXEC STKNIL SCAN ¬SF1
AGL2: LIP SG EXEC LIPGO ¬AGL3 #XXQQ
AGL3: SG →→ ARG_LIST ( SG EXEC GLBST2 ¬RFI #XXQQ
AGL4: LIP @EDR IP →→ LIP AE @EDR ¬AGL5 #XXQQ
AGL5: LIP AE @EDR →→ LIP @EDR EXEC SIP1 ¬AGL6
AGL6: LIP ) →→ SP EXEC STPRIM SCAN ¬SF1
AGL7: , →→ ARG_LIST ( EXEC GLBST2 SCAN ¬RFI #XXQQ
NRCD: ( IRC ) →→ E EXEC NRCDO SCAN ↓↓ #XXQQ
MUMBLE Compile-time type checking productions;
CK0: ( →→ SCAN ¬CK1
CK1: ) →→ ICN EXEC MKINT SCAN ¬XID
CK2:
@ALGLP EXEC @ALGLP TYPST1 SCAN ¬CK4
@XO →→ EXEC @XO XOWST1 SCAN ¬CK1
DEFINE →→ EXEC @4 RSTST1 SCAN ¬CK1
REDEFINE →→ EXEC @4 RSTST1 SCAN ¬CK1
EVALDEFINE →→ EXEC @4 RSTST1 SCAN ¬CK1
EVALREDEFINE →→ EXEC @4 RSTST1 SCAN ¬CK1
RECORD_POINTER →→ EXEC @6 RSTST1 SCAN ¬CK1
RECORD_CLASS →→ EXEC @7 RSTST1 SCAN ¬CK1
@VAL →→ EXEC @VAL VALST1 SCAN ¬CK1
ARRAY SCAN ¬CK5
PROCEDURE →→ EXEC @5 RSTST1 SCAN ¬CK1
@RSTDC →→ EXEC @RSTDC RSTST1 SCAN ¬CK1 #Q108
CK3: ARRAY →→ EXEC @3 RSTST1 SCAN ¬CK1
CKP: PROCEDURE →→ EXEC @5 RSTST1 SCAN ¬CK1 #CK1
CK4: @XO →→ EXEC @XO XOWST1 SCAN ¬CK4
@ALG @HEL →→ EXEC @HEL HELST1 SCAN ¬CK3
@ALG ARRAY →→ARRAY SCAN ¬CK5
ARRAY SCAN ¬CK5
@ALGLP SG →→ SG ¬CK3
CK5: SG ITEMVAR →→ EXEC @0 HELAR3 SCAN ¬CK3
SG ITEM →→ EXEC @1 HELAR3 SCAN ¬CK1
ARRAY SG →→ SG EXEC @3 RSTST1 ¬CK1 #CKP
MUMBLE Boolean Expressions;
BX1: @E @RL @E @RL →→ BT AND @E @RL ∞∞
EXEC @E ESET @RL BOREL1 SCAN ¬EX1
@E @RL @E SG →→ BP SG EXEC @E ESET @RL BOREL ¬BP2
@RL SCAN ¬EX1
@E SG →→ BP SG EXEC BOOP ¬BP2
BP2: NOT BP SG →→ BP SG EXEC BONOT ¬BP2
BP3: BT AND BP SG →→ BP SG EXEC BOAND ¬BP2
BT2: @AR AND →→ BT AND SCAN ¬EX1
BT3: BE OR @AR SG →→ BE SG EXEC BOOR ¬BE2
BE2: @AR OR →→ BE OR SCAN ¬EX1
( @AR ) EXEC TWID10 SCAN ¬BP4
@AR SG →→ BE SG ↓↓ #XXQQ
BP4: @LOWER SG @AR SG1 SG2 →→ @LOWER P SG2 ∞∞
EXEC EXPOP1 ¬P2
SG @AR SG1 @LOWER →→ P @LOWER ∞∞
EXEC EXPOP1 ¬P2
SG @AR SG1 SG2 →→ BP SG2 ∞∞
EXEC TWID21 ¬BP2 #XXQQ
MUMBLE Leap constructs;
SPRP: PROPS AE ) →→ AE EXEC PPROP SCAN 2 ¬SPP2 #Q110
SPP2: ← SG ↑EX ¬SPP3 #Q111
SPP3: AE ← E SG →→ S SG EXEC PPSTO ¬S9 #Q111
PRP: PROPS AE ) →→ AE EXEC PPROP SCAN ¬PRP2 #Q110
PRP2: SG ← SCAN ↑EX ¬PRP3
AE SG →→ P SG EXEC GTPROP ¬P2
PRP3: AE ← E SG →→ E SG EXEC EPPSTO ¬E2 #Q111
EDAT: DATUM ( →→ DATUM SCAN ↑EX1 ¬EDA1 #XXQQ
EDA1: SG EXEC CLRSET ¬EDA2
EDA2: DATUM AE , →→ DATUM AE SCAN ↑DTTP ¬EDA3 #EDA3
EDA3: DATUM AE ) →→ I EXEC DDATA SCAN ↓↓ #XXQQ
LDA: LDAT ( →→ LDAT SCAN ↑EX1 ¬LDA1 #XXQQ
LDA1: SG EXEC CLRSET ¬LDA2
LDA2: LDAT AE , →→ LDAT AE SCAN ↑DTTP ¬LDA3 #LDA3
LDA3: LDAT AE ) →→ I EXEC LDATA SCAN ¬SID #XXQQ
DTTP: @ALGLP →→ EXEC @ALGLP TYPSET SCAN ¬DTTP #DTT3
DTT3: SAFE →→ EXEC SAFSET SCAN ¬DTTP #DTT4
DTT4: ARRAY →→ EXEC ARYSET SCAN ¬DTTP #DTT5
DTT5: SG ↓↓ #TRAP
IPQ: ? ITV SG →→ IP SG EXEC STITM QUESET ¬IP2
@IARY [ →→ ARID EXEC ARYIDX SCAN ↑ARY ¬IPQ
@REFXX ? @IDC SG →→ @REFXX @IDC SG ∞∞
EXEC RFQKLG ¬XID #Q109
IP0: BIND ITV SG →→ IP SG EXEC STITM FRESET ¬IP2
@IARY [ →→ ARID EXEC ARYIDX SCAN ↑ARY ¬IP0
@REFXX BIND @IDC SG →→ @REFXX @IDC SG ∞∞
EXEC RFBKLG ¬XID #Q109
IP2: @REMEMB IP @IN →→ @REMEMB E @IN ↓↓
IP @IN →→ IP @IN SCAN ¬EX1
@EDN IP @EDR →→ @EDN AE @EDR ↓↓
[ AE ⊗ IP ≡ SCAN ¬EX1
[ AE ⊗ IP ≡ IP ] →→ IP EXEC BTRIP SCAN ¬IP2
AE ⊗ IP ≡ →→ AE ⊗ AE ≡ ¬IE3
IP @ASOP →→ AE @ASOP EXEC GLBST2 SCAN ¬EX1
@ASOP IP SG →→ @ASOP AE SG ¬IE3
IP @RL →→ AE @RL EXEC ITMREL ¬IE3
IP SG →→ AE SG ¬IE3 #XXQQ
BRK1: SIP { →→ LIP SCAN ¬BRK2
SIP } →→ SP EXEC LPPHI SCAN ¬SF1
SG EXEC SIPGO ↑EX1 ¬SPP0 #TRAP
BRK2: LIP } →→ SP EXEC STKNIL SCAN ¬BRK3 #BRK4
BRK3: } →→ SCAN ¬SF1 #SF1
BRK4: LIP LISTC →→ SP EXEC STKNIL SCAN ¬SF1 #BRK5
BRK5: LIP SG EXEC LIPGO ↑EX1 ¬SPP0 #TRAP
SPP0: @SIP AE @EDR →→ @SIP @EDR EXEC SIP1 ¬SPP1 #Q48
SPP1: @SIP , →→ @SIP SCAN ↑EX1 ¬SPP0
LIP LISTC →→ SP EXEC STPRIM SCAN ¬SF1
LIP } →→ SP EXEC STPRIM SCAN ¬LIP2
SIP } →→ SP EXEC STPRIM SCAN ¬SF1 #Q48
LIP2: SP } →→ SP SCAN ¬SF1 #SF1
FRC0: BLKFRC FOREACH EXEC BLOCK EACH4 ENDDEC SCAN ¬FRC
FRC: ? SCAN ¬FRD1
ITV SCAN ¬FRC1
| →→ EXEC DUMITV FRCHGO SCAN ¬FRE
SUCH →→ EXEC DUMITV FRCHGO SCAN ¬FRD #Q485
FRC1: ITV , →→ EXEC ENTITV SCAN ¬FRC
ITV | →→ EXEC ENTITV FRCHGO SCAN ¬FRE
ITV SUCH →→ EXEC ENTITV FRCHGO SCAN ¬FRD #XXQQ
FRD: THAT →→ SCAN ¬FRE #FRE
FRD1: ? ITV →→ ITV EXEC QLOCAL SCAN ¬FRC1 #Q486
FRE: ( →→ CRAP EXEC BOPREP SCAN ↑BEX ¬FRF
SG ↑EX1 ¬FRG
FRF: CRAP BE ) →→ TR EXEC FRBOL SCAN ¬FRG #Q50
FRG: FOREACH MPRO SG →→ FOREACH TR SG ∞∞
EXEC INMAIN CALMP ¬FRG
FRG2: FOREACH TR AND →→ FOREACH ∞∞
EXEC FRCH1 SCAN ¬FRE
FOREACH TR DO →→ ASSDO EXEC FRCH2 KOUNT1 SCAN ¬S1
@MAKER TR SG →→ S SG ∞∞
EXEC @MAKER MAKIT ¬S9 #Q51
SIV: ( ITV , ITV ) SG →→ P SG ∞∞
EXEC SAMEV ¬P2 #Q112
LSB1: SP [ @E ] →→ IP EXEC ELSSUB SELIP SCAN ¬IP2
SP [ @E @NXT SCAN ↑EX ¬LSB2 #Q52
LSB2: SP [ @E @NXT @E ] →→ SP ∞∞
EXEC ELSSUB @NXT SELSBL SCAN ¬SF1 #Q53
SF0: SP @BEAFT EXEC REFINF ¬SFS #SFS
SFS: SP SG EXEC STSET ¬SF1 #TRAP
SF1: @PUT SG @IN SP SG1 ↓↓
@IN SP SG ¬SF1A
@EDN SP @EDR →→ @EDN AE @EDR ↓↓
SF1A: SP [ EXEC LSSUB SCAN ↑EX ¬LSB1
SP & SP SG →→ SP SG EXEC LSTCAT ¬SF1
SP & SCAN ¬EX1
SF - SP SG →→ SF SG EXEC STMIN ¬SF2
SP SG →→ SF SG ¬SF2
SF2: SF - SCAN ¬EX1
ST1: ST ∩ SF SG →→ ST SG EXEC STINT ¬ST2
SF SG →→ ST SG ¬ST2
ST2: ST ∩ SCAN ¬EX1
SE1: SE ∪ ST SG →→ SE SG EXEC STUNI ¬SE2
ST SG →→ SE SG ¬SE2
SE2: SE ∪ SCAN ¬EX1
( SE ) →→ SP EXEC TWID10 SCAN ¬SF1
FOREACH IP IN SE SG →→ FOREACH TR SG ∞∞
EXEC STSRC ↓↓
IP IN SE SG →→ P SG EXEC STIN ¬P2
SE SG →→ AE SG ¬IE3
IE3: @EDN AE @EDR ↓↓
AE @ASOP AE SG ¬IE4
DS ≡ AE SG →→ TR SG EXEC FID1 ↓↓
AE @RL ¬BX1
@RL AE SG ¬BX1
( AE ) →→ AE SCAN ¬ETYP
PT0: REMOVE E FROM SCAN ↑EX1 ¬PT1
PT1: @PUT IP @IN SP @OTH →→ S @OTH ∞∞
EXEC @PUT PUTIN ¬S9
REMOVE E FROM SP @OTH →→ S @OTH ∞∞
EXEC REMXD ¬S9
PUT IP IN SP @BEAFT EXEC HLDPNT SCAN ↑EX ¬PTII #XXQQ
PTII: PUT IP IN SP @BEAFT @E @OTH →→ S @OTH ∞∞
EXEC @BEAFT PUTINL ELSSUB ¬S9 #Q55
IE4: AE ⊗ AE ≡ →→ DS ≡ SCAN ¬EX1
MUMBLE FOLLOWING PRODUCTION BECAUSE EQV CAN'T BE IN TWO CLASSES AT SAME
TIME AND STILL USE INDEX PROPERTY;
AE ≡ AE SG →→ SP SG ∞∞
EXEC @3 DERIV ¬SF1
AE @ASOP AE SG →→ SP SG ∞∞
EXEC @ASOP DERIV ¬SF1 #XXQQ
REP0: IST [ E ] →→ IST E SCAN ¬REP1 #Q57
REP1: IST E ← →→ IST E LSP EXEC ELSSUB SCAN ↑EX ¬REP2 #XXQQ
REP2: IST E LSP AE SG →→ S SG ∞∞
EXEC REPLCX ¬S9 #Q59
MUMBLE Loop Statements, array calcs, proc names, etc;
FOR1: FORCA LHS E STEP E UNTIL E @DC →→ FORCA LHS @DC ∞∞
EXEC @DC FRSTE ¬FOR4
FORCA LHS @E @DC →→ FORCA LHS @DC ∞∞
EXEC @E ESET @DC FRSTO ¬FOR4
FOR2: FORCA LHS E STEP E WHILE BE @DC →→ FORCA LHS @DC ∞∞
EXEC @DC FRWHILE ¬FOR4 #Q60
FOR4: , →→ SCAN ↑NEX ¬FOR1
FORCA LHS DO →→ FORCA EXEC KOUNT1 SCAN ¬S1
STO: LHS @E SG →→ S SG EXEC @E STORE ¬S9
@ISTO ↔ @E SG →→ S SG EXEC @E SWPR ¬S9 #Q61
ARY: SG ↑EX ¬ARY1
ARY1: ARID E , →→ ARID EXEC ARRSBY SCAN ↑EX ¬ARY1
ARID E ] →→ I EXEC ARRSB1 SUBSCR TYPAR ∞∞
SCAN ↓↓ #Q62
PARM: SPROUT PCALL @E ) →→ SPROUT ∞∞
EXEC @E ECHK CALARG SPRPD SCAN ¬FK3
PCALL @E ) →→ S EXEC @E ECHK CALARG ISUCAL PRST ∞∞
SCAN ¬S9
FCALL @E ) →→ P EXEC @E ECHK CALARG ISUCAL TYPPRO ∞∞
SCAN ¬PAM2
@CALL @E , →→ @CALL EXEC @E ECHK CALARG SCAN ↑EX ¬PARM #Q63
PAM2: MPRO SG ↓↓ #XID
IFQ: IF BE THEN →→ SIFC EXEC STIF KOUNT1 SCAN ¬S1 #Q64
MUMBLE JFR 4-17-76 separate entries for statement (CSES) and expression (CSEX).
Under old (combined) method, a CASE expression used as a statement caused parser
to POPJ at E2 (via ETYP), quitting compilation in the middle of the file without
telling anyone.;
CSES: CASE E OF →→ CASEX EXEC CASSTR SCAN ¬CAS1 #Q65
CAS1: BEGIN →→ EXEC KOUNT1 SCAN ¬CAS2 #Q24
CAS2: CASEX STC →→ CASEX EXEC CSNAME SCAN ¬S1 #S1
CSEX: CASE E OF →→ CASEX EXEC CASSTR SCAN ¬CAS9 #Q65
CAS9: CASEX ( →→ CASEX EXEC CASE1 KOUNT5 SCAN ↑EX ¬CAS3 #Q66
CAS3: CASEX @E ) →→ @E EXEC @E CASE2 CASE3 SCAN ¬ETYP
CASEX @E , →→ CASEX EXEC @E CASE2 KOUNT6 SCAN ↑EX ¬CAS3 #Q67
CASD: CASEX [ E ] SCAN ¬S0
OPPS BEGIN [ E ] →→ OPPS BEGIN SCAN ¬S0 #XXQQ
EIF: IF BE THEN →→ EIFC EXEC EXIF KOUNT3 SCAN ↑EX ¬EIF1 #Q69
EIF1: EIFC @E ELSE EXEC @E EXIF1 KOUNT4 SCAN ↑EX ¬EIF2 #Q70
EIF2: EIFC SG ELSE @E SG1 →→ SG SG1 ∞∞
EXEC @E EXIF2 ¬ETYP #Q71
ETYP: E SG ¬E2
AE SG →→ AE SG EXEC LTYPCK ¬ETY2
BE SG →→ E SG ¬E2 #XXQQ
ETY2: IP SG ¬IP2
SP SG ¬SF1
WHG: WHILE BE DO →→ WHILC EXEC WHIL KOUNT1 SCAN ¬S1 #Q73
MUMBLE backtracking, memory and loc, record fields;
RFR: @REMEMB ALL →→ @REMEMB EXEC @REMEMB RMASET SCAN ¬NTXT
@REMEMB ( →→ @REMEMB EXEC @REMEMB RMBSET SCAN ↑EX1 ¬RFR2
@REMEMB SG EXEC @REMEMB RMBSET ↑EX1 ¬RFR2 #TRAP
RFR2: @REMEMB @E ) →→ @REMEMB ∞∞
EXEC RMSTK SCAN ¬NTXT
@REMEMB @E , →→ @REMEMB EXEC RMSTK SCAN ↑EX1 ¬RFR2
@REMEMB @E @IN →→ @REMEMB EXEC RMSTK SCAN ↑EX1 ¬NTX2 #Q72
NTXT: @REMEMB @IN →→ @REMEMB SCAN ↑EX1 ¬NTX2 #Q68
NTX2: @REMEMB ICTXT SG →→ S SG EXEC CNTXTS ¬S9 #XXQQ
NCXT: IN_CONTEXT SG , →→ IN_CONTEXT ∞∞
EXEC RMSTK SCAN ↑EX1 ¬NCX2 #Q113
NCX2: IN_CONTEXT ICTXT ) →→ P ∞∞
EXEC INCNTX SCAN ¬P2 #Q113
ECEL: ICTXT COL SCAN ↑EX1 ¬CEL2 #CENO
CENO: SG ↓↓
CEL2: ICTXT COL @E SG →→ P SG ∞∞
EXEC @E ECHK CONELM ¬XID #Q115
LCEL: ICTXT COL @E SG →→ I SG ∞∞
EXEC @E ECHK CONELM ¬SID #Q115
DEL: DELETE AE ) →→ S EXEC DELT SCAN ¬S9 #Q74
RTN: LOP AE ) →→ IP EXEC STLOP SCAN ¬IP2
@CVSET AE ) →→ SP EXEC @CVSET CVLS SCAN ¬SF1
BBPP @E , SCAN ↑EX ¬RTP
@FUNC1 @E ) →→ P EXEC @FUNC1 FDO1 SCAN ¬P2
@FUNC2 @E ) →→ IP EXEC @FUNC2 FDO2 SCAN ¬IP2 #XXQQ
MEMX: [ →→ EXEC ZBITS SCAN ↑EX ¬MMX1 #XXQQ
MMX1: MEMORY E ] →→ IVB EXEC MEMI SCAN ↓↓
MMX2: , →→ EXEC ZBITS SCAN ¬MMX3 #Q75
MMX3:
@ALGLP →→ EXEC @ALGLP TYPSET SCAN ¬MMX4 #XXQQ
MMX4: @HEL →→ EXEC @HEL HELSET SCAN ¬MMX5
MMX5: MEMORY E ] →→ I EXEC MEMS SCAN ↓↓ #Q75.5
LOCX: LOCATION ( →→ SCAN ¬LCX1 #XXQQ
LCX1: IPR SCAN ¬LCX2
IRC SCAN ¬LCX3
LCXY: SG →→ FCALL SG ↑EX ¬LCXX #XXQQ
LCX2: IPR ) →→ P EXEC LOCN SCAN ¬XID #LCX4
LCX3: IRC ) →→ P EXEC LOCN SCAN ¬XID
LCX4: SG →→ EXEC SCNBAK ¬LCXY #XXQQ
LCXX: FCALL @E ) →→ P EXEC @E ECHK LOCN SCAN ¬XID #XXQQ
RCF: IRC : SCAN 2 ¬RCF1 #XXQQ
RCF1: IRC : SG [ →→ IRC : EXEC RCFPIK SCAN ↑EX ¬RCF2 #XXQQ
RCF2: IRC : E ] →→ I EXEC RCFREF SCAN ↓↓ #XXQQ
MUMBLE In-line code;
RTP: BBPP @E , @E , EXEC BPTWD SCAN ↑EX ¬RTP1 #Q76
RTP1: BBPP @E , @E , @E ) →→ P ∞∞
EXEC BPNT SCAN ¬P2 #XXQQ
ESTO: ELHS @E SG →→ @E SG EXEC @E STOR1 ¬ETYP #Q78
PROS: , SCAN ↑EX ¬PROS
IBP @E ) →→ S EXEC @PRO1 BYPQ SCAN ¬S9
@PRO1 @E , @E ) →→ S EXEC @PRO1 BYPS SCAN ¬S9 #XXQQ
BSTR: STID E @NXT E ] →→ ISV EXEC @NXT SUBSTR SCAN ¬XIE #Q80
DOLS: DOL S UNTIL BE @END →→ S @END ∞∞
EXEC DOUNT KOUNT1 ¬S9 #Q81
MUMBLE IN-LINE CODE PRODUCTIONS.;
MUMBLE NON-ID LEVEL;
COD: @STCO END →→ S EXEC ONEWRD WRDNIT LITOFF UP1 ∞∞
SCAN ¬S7
; →→ EXEC ONEWRD WRDNIT SCAN ¬COD
@ →→ EXEC CODIND SCAN ¬COD
( →→ SCAN ↑CONX ¬CDP
[ →→ EXEC LITOFF SCAN ↑EX ¬CDB
: →→ EXEC ERRCOL SCAN ¬COD
, →→ EXEC ERRCOM SCAN ¬COD
ACCESS →→ EXEC CESSGO SCAN ↑EXD ¬CDAC
SG EXEC SETSIX ¬CDI
CDAC: @E ) →→ EXEC @E ECHK CESSOK CODID SCAN ¬COD #XXQQ
CDI: OPC →→ EXEC SETOP SCAN ¬COD
ILB →→ ILB SCAN ¬CDI1
IAR →→ IAR SCAN ¬CODS
IPR →→ IPR SCAN ¬CODS
IRC →→ IRC SCAN ¬CODS
SG →→ SG ↑EX ¬CDI1 #XXQQ
CDI1: ILB : →→ EXEC ENTLAB SCAN ¬COD
ILB SG →→ SG EXEC CODID ¬COD
@E , →→ EXEC @E ECHK CODREG SCAN ¬COD
@E SG →→ SG EXEC @E ECHK CODID ¬COD #XXQQ
CODS: IAR [ ↑CDS1 ¬CDI1
SG SG1 →→ SG1 EXEC CODID ¬COD #XXQQ
CDS1: SG ¬XIE
CDP: @E ) →→ EXEC @E ECHK CODX SCAN ¬COD #XXQQ
CDB: @E ] →→ EXEC @E ECHK CODLIT SCAN ¬COD #XXQQ
MUMBLE Conditional Compilation Statements;
IF0: IFC EXEC CPSHBT CPSHEY CNDRCN PSHLST ∞∞
SCAN ↑CONX ¬IF1
IF1: IFC E @THT →→ CTRU1 EXEC TWCOND CPOPBT POPLST ¬IF2 #XXQQ
IF2: CTRU1 EXEC TOMACN PRESUME ¬IF3
CFLS1 EXEC SWPOFF CPOPET PSHLST ∞∞
SCAN ¬IF4 #XXQQ
MUMBLE IF ABOVE LINE BOMBS, SOMETHING'S REALLY WRONG;
IF3: WDPL CTRU1 ENDC →→ WDPL ∞∞
EXEC SWICHM CPOPET PRESUME ↓↓
@CTRUE ENDC →→ EXEC CPOPET CNDRCP PRESUME ↓↓
CTRU1 ELSEC →→ CFLS2 EXEC SWPOFF CPOPET FRMACN PSHLST ∞∞
SCAN ¬IF4 #XXQQ
IF4: WDPL CFLS1 ENDC →→ EXEC FREMBW SWPON POPLST ∞∞
PRESUME ↓↓
@CFALSE ENDC →→ EXEC SWPON TOMACN CNDRCP POPLST ∞∞
PRESUME ↓↓
CFLS1 ELSEC →→ CTRU2 EXEC SWPON CPSHEY TOMACN POPLST ∞∞
PRESUME ¬IF3
NOCOND ENDC →→ SCAN ¬IF4
@CONBG →→ NOCOND SCAN ¬IF4
SG →→ SCAN ¬IF4 #XXQQ
IF5: IFCR →→ IFC EXEC CPSHBT CPSHEY CNDRCY PSHLST ∞∞
SCAN ↑CONX ¬IF1 #XXQQ
WH0: WHILEC →→ EXEC SETDLM CPSHBT CPSHEN PSHLST ∞∞
SCAN ¬WH1
WH1: STC EXEC OFFDLM SCAN ¬WH2
WH2: @DOCA →→ WDPL EXEC SETDLM DWPREP SCAN ↑CONX ¬WH3
WH3: STC WDPL SG ENDC →→ WDPL ∞∞
EXEC DFENT OFFDLM SETWHL CPOPBT CPOPET POPLST ∞∞
PRESUME ↓↓
CS0: CASEC EXEC CPSHBT CPSHEN PSHLST ∞∞
SCAN ↑CONX ¬CS1
CS1: CASEC E OFC →→ CDPL CTRU1 ∞∞
EXEC SETDLM SWPOFF CPOPET DCPREP ∞∞
¬CSB
CASEC E OF →→ CDPL CTRU1 ∞∞
EXEC SETDLM SWPOFF CPOPET DCPREP ∞∞
¬CSB
CS2: CDPL CFLS1 SG , →→ CDPL CFLS1 ∞∞
EXEC TWCSCN ¬CSB
CDPL CFLS1 SG ENDC →→ EXEC FRMBCE OFFDLM SWPON TOMACN CPOPBT POPLST ∞∞
PRESUME ↓↓
CDPL CTRU1 SG , →→ CDPL CTRU1 ∞∞
EXEC DFENT1 OFFDLM SETCSE CPOPBT CPOPET POPLST ∞∞
PRESUME ¬CS3
CDPL CTRU1 SG ENDC →→ CDPL NOMORE ∞∞
EXEC DFENT1 OFFDLM SETCSE CPOPBT CPOPET POPLST ∞∞
PRESUME ¬CS4
@CONBG SG →→ SG NOCOND SCAN ↑CSA ¬CS2
CSA: NOCOND ENDC →→ SCAN ↓↓
@CONBG →→ NOCOND SCAN ↑CSA ¬CSA
SG →→ SCAN ¬CSA #XXQQ
CSB: CTRU1 SCAN ↑CONX ¬CS2
CFLS1 SCAN 2 ¬CS2 #TRAP
CS3: CDPL CTRU1 ENDC →→ CDPL CFLS1 ∞∞
EXEC FRMBCT SETDLM SWPOFF CPSHBT PSHLST ∞∞
SCAN 2 ¬CS2 #XXQQ
CS4: CDPL NOMORE ENDC →→ EXEC FREMBW OFFDLM SWPON ∞∞
PRESUME ↓↓ #XXQQ
FR0: FORC →→ FRDPL EXEC DWPREP CPSHBT CPSHEN PSHLST MACOFF ∞∞
SCAN ↑FM0 ¬FR1
FR1: SG @IDD @EQC →→ SG EXEC DFPINS SCAN ↑CONX ¬FR2
FR2: FRDPL E @STEPCA →→ FRDPL ∞∞
EXEC GTSTRT SCAN ↑CONX ¬FR3
FR3: FRDPL E @UNTLCA →→ FRDPL ∞∞
EXEC GTSTEP SCAN ↑CONX ¬FR4
FR4: FRDPL E @DOCA →→ CTRU1 FRDPL ∞∞
EXEC DFSET GETERM SETDLM SCAN ↑CONX ¬FR41
FR41: CTRU1 SG SG1 SG2 ¬FR5
CFLS1 SG SG1 SG2 EXEC SWPOFF CPOPET ¬FR51
FR5: CTRU1 FRDPL SG ENDC →→ FRDPL ∞∞
EXEC DFENT FFPOP OFFDLM SETFR CPOPBT CPOPET POPLST ∞∞
PRESUME ¬FR6
FR51: CFLS1 FRDPL SG ENDC →→ ∞∞
EXEC OFFDLM FREMBN SWPON CPOPBT POPLST ∞∞
PRESUME ↓↓
FR6: FRDPL ENDC →→ CTRU1 FRDPL ∞∞
EXEC TWNUM ¬FR7
FR7: CTRU1 FRDPL →→ FRDPL EXEC SWCHFR PRESUME ¬FR6
CFLS1 FRDPL →→ EXEC FREMBF PRESUME ↓↓
FL0: FORLC →→ FLDPL EXEC DWPREP CPSHBT CPSHEN PSHLST MACOFF ∞∞
SCAN ↑FM0 ¬FL1
FL1: SG @IDD @EQC →→ SG EXEC DFPINS GETACT SCAN ¬FL2
FL2: @DOCA →→ EXEC DFSET SETDLM SCAN ↑CONX ¬FL3
FL3: FLDPL SG ENDC →→ FLDPL EXEC DFENT FFPOP OFFDLM SETFL CPOPBT CPOPET POPLST ∞∞
PRESUME ¬FL4
FL4: FLDPL ENDC →→ CTRU1 FLDPL ∞∞
EXEC TWACT ¬FL5
FL5: CTRU1 FLDPL →→ FLDPL EXEC SWCHFL PRESUME ¬FL4
CFLS1 FLDPL →→ EXEC FREMBF PRESUME ↓↓
FM0: SG EXEC MACON SCAN ↓↓
MUMBLE Macro DEFINE handling;
DF0: DEFINE →→ EXEC MACOFF DLMPSH DPSHBT ∞∞
SCAN ¬DFR
DFR: @IDD →→ DPL EXEC DFPREP SCAN ¬DFR1 #Q4
DFR1: ( →→ EXEC MACOFF SCAN 2 ¬DPA #LEQ
DPA: SG @IDD , →→ SG EXEC DFPINS SCAN 2 ¬DPA
SG @IDD ; →→ SG EXEC DFPINS SCAN 2 ¬DPA
SG @IDD ) →→ SG EXEC MDFPNS SCAN ¬LEQ #Q4
LEQ: STC →→ EXEC SPDMBD SCAN ¬LEQ1
LEQ1: SG @EQC →→ SG EXEC DLMPOP DFSET SETDLM ∞∞
SCAN ↑CONX ¬DEQ #XXQQ
DEQ: DPL SG1 , →→ EXEC DFENT FFPOP ENDMAC EVMCOF OFFDLM DLMPSH ∞∞
SCAN ¬DFR
SG SG1 ; →→ EXEC DEFOFF DFENT FFPOP ENDMAC SWDLM OFFDLM DPOPBT ∞∞
↓↓ #Q20
RDF: REDEFINE →→ EXEC SETRDF MACOFF DLMPSH DPSHBT SCAN ¬DFR #XXQQ
EDF: EVALDEFINE →→ EXEC SETEDF DLMPSH DPSHBT SCAN ¬DFR #XXQQ
ERF: EVALREDEFINE →→ EVALDEFINE EXEC SETRDF ¬EDF #XXQQ
ASG: ASSIGNC →→ EXEC DLMPSH DPSHBT INTSCN ∞∞
SCAN ¬AS1
AS1: ICN →→ ASSIGNC EXEC ASGOFF SCAN ¬AS2 #Q116
AS2: STC →→ EXEC SPDMBD SCAN ¬AS3
AS3: SG = →→ SG EXEC DLMPOP DFSET SETDLM ∞∞
SCAN ↑CONX ¬AS4 #XXQQ
AS4: SG SG1 , →→ EXEC ASGENT FFPOP OFFDLM DLMPSH INTSCN ∞∞
SCAN ¬AS1
SG SG1 ; →→ EXEC ASGENT FFPOP SWDLM OFFDLM DPOPBT ∞∞
↓↓ #Q20
NMC: NOMAC →→ EXEC MACOFF SCAN ¬NM1 #XXQQ
NM1: I →→ EXEC MACON SCNBAK ↓↓ #Q118
MUMBLE print statement;
%PRT: PRINT ( →→ PRINT EXEC STRTPT SCAN ↑EX ¬%PR1
%PR1: PRINT @E ) →→ S EXEC @E ECHK DOPRT ENDPRT SCAN ¬S9
PRINT @E , →→ PRINT EXEC @E ECHK DOPRT SCAN ↑EX ¬%PR1
%CPRT: CPRINT ( →→ CPRINT SCAN ↑EX ¬%CPR1
%CPR1: CPRINT @E , →→ PRINT EXEC @E ECHK STCPRT SCAN ↑EX ¬%PR1
MUMBLE dynamic procedure binding, etc.;
%BP1: ( →→ SCAN ↑EX ¬%BP2 #XXQQ
%BP2: ASSIGN @E , →→ ASSIGN EXEC BNDITM SCAN 2 ¬%BP3 #Q92
%BP3: ASSIGN IPR ) →→ S EXEC PDASTK BINCL SCAN ¬S9
DATUM ( →→ ( ↑EXD ¬%BP4 #XXQQ
%BP4: ASSIGN @E ) →→ S EXEC BNDITM COPPIT SCAN ¬%BP5 #XXQQ
%BP5: S ) →→ S SCAN ¬S9 #XXQQ
MUMBLE apply;
%EV1: ( →→ SCAN 2 ¬%EV2 #XXQQ
%EV2: IPR SG →→ SG EXEC PDASTK ¬%EV3
DATUM ( →→ ( ↑EXD ¬%EV4 #XXQQ
%EV3: , →→ SCAN ↑EX ¬%EV5
FCALL APPLY ) →→ P EXEC EVLNLL TYPIRG SCAN ¬XID
PCALL APPLY ) →→ S EXEC EVLNLL SCAN ¬S9
SPROUT APPLY ) →→ SPROUT ∞∞
EXEC SAPPN SCAN ¬FK3 #XXQQ
%EV4: APPLY @E ) →→ APPLY EXEC BNDITM PITSTK SCAN ¬%EV3 #Q99
%EV5: PCALL APPLY @E ) →→ S EXEC EVLLST SCAN ¬S9
FCALL APPLY @E ) →→ P EXEC EVLLST TYPIRG SCAN ¬XID
SPROUT APPLY @E ) →→ SPROUT ∞∞
EXEC SAPPL SCAN ¬FK3 #Q100
MUMBLE sprout;
FK: SPROUT ( →→ SPROUT EXEC INMAIN SCAN ↑EX ¬FK1 #XXQQ
FK1: SPROUT @E , →→ SPROUT EXEC BNDITM SCAN 2 ¬FK2 #Q97
FK2: SPROUT IPR ( →→ SPROUT PCALL ∞∞
EXEC FPREM RDYCAL SCAN ↑EX ¬PARM
SPROUT IPR SG →→ SPROUT SG ∞∞
EXEC FPREM PDASTK ¬FK3
SPROUT APPLY ( →→ SPROUT APPLY ∞∞
EXEC SAPPL1 SCAN 2 ¬%EV2 #XXQQ
FK3: , →→ SCAN ¬FK4
SPROUT ) →→ S EXEC STDOPT STDKLL SPRIT ∞∞
SCAN ¬S9 #XXQQ
FK4: , →→ EXEC STDOPT SCAN ¬FK7
SG ↑EX ¬FK5
FK5: SPROUT E SG →→ SPROUT SG EXEC STKOPT ¬FK6 #Q98
FK6: SPROUT ) →→ S EXEC STDKLL SPRIT SCAN ¬S9
, →→ SCAN ¬FK7 #XXQQ
FK7: SPROUT STC →→ SPROUT EXEC BNKLL SCAN ¬FK9
FK8: SPROUT IST →→ SPROUT EXEC EKLL SCAN ¬FK9 #XXQQ
FK9: SPROUT ) →→ S EXEC SPRIT SCAN ¬S9 #XXQQ
MUMBLE CAUSE;
%CS2: @E , →→ EXEC BNDITM SCAN ↑EX ¬%CS3 #Q101
%CS3: CAUSE @E ) →→ S EXEC BNDITM STDOPT CSIT SCAN ¬S9
@E , →→ EXEC BNDITM SCAN ↑EX ¬%CS4 #Q102
%CS4: CAUSE E ) →→ S EXEC STKOPT CSIT SCAN ¬S9 #Q103
MUMBLE INTERROGATE;
%IR2: PCALL AE ) →→ S EXEC STKIRG STDOPT IRIT SCAN ¬S9
FCALL AE ) →→ P EXEC STKIRG STDOPT IRIT TYPIRG SCAN ¬XID
AE , →→ EXEC STKIRG SCAN ↑EX ¬%IR3 #Q104
%IR3: PCALL E ) →→ S EXEC STKOPT IRIT SCAN ¬S9
FCALL E ) →→ P EXEC STKOPT IRIT TYPIRG SCAN ¬XID #Q105
MUMBLE DEPENDENTS;
DPS1: ( STC ) →→ SP EXEC BDEPS SCAN ¬SF1 #QDPS
MUMBLE SETIP & STECP;
SIC: ( →→ SCAN ↑EX ¬SIC1 #XXQQ
SIC1: @E , →→ EXEC BNDITM SCAN 2 ↑SCX ¬SIC2 #XXQQ
SIC2: SETCP →→ S EXEC SCPCLL SCAN ¬S9
SIC3: SETIP →→ S EXEC SIPCLL SCAN ¬S9 #XXQQ
SCX: IPR ) →→ EXEC PDASTK ↓↓
DATUM ( →→ ( SCAN ↑EXD ¬SCX1 #XXQQ
SCX1: @E ) →→ EXEC BNDITM PITSTK ↓↓
MUMBLE Error productions;
XXQQ: SG EXEC ER7 ¬FUSH
FUSH: @QEND ¬FA #FB
FA: @QBEG ; →→ @QBEG EXEC KILPOP ERR101 CLRSET SCAN ¬QDS2
@QBEG END →→ @QBEG S END ∞∞
EXEC KILPOP ERR101 ¬S9
SG @QEND →→ @QEND ¬FA
FB: @BEG →→ OPPS @BEG EXEC ERR102 SCAN ¬DS
SG →→ SCAN ¬FUSH
QDS2: @BEG @DCL ¬DS0 #S0
RET: SG ↓↓
QPAR: @E ) →→ @E EXEC ERR103 SCAN ↓↓
QPR1: ( E SG →→ P SG EXEC TWID10 ERR104 ↑P2 ¬RET
( BE SG →→ ( BE ) SG EXEC TWID10 ERR104 ↑BP4 ¬RET #FUSH
Q1: SG EXEC ER1 ¬Q1A
Q1A: BEGIN ¬BB0
SG →→ SCAN ¬Q1A
Q2: @IDD EXEC ER5 ¬BB0
SG EXEC ER2 ¬Q1A
QIDC: @DCL @IDD →→ @DCL EXEC ER3 CLRSET SCNBAK ¬DS0 #IDL
Q4: SG EXEC ER4 ¬FUSH
Q5: @IDD EXEC ER5 CLRSET ¬DS0
BEGIN S ELSE →→BEGIN EXEC ER6 SCAN ¬S1 #XXQQ
Q7: PDEC SG EXEC ER5 ENDPR KOUNT1 ¬S1
PDNO @IDD →→ @IDD EXEC ER5 ENDPR FWUNDO ¬DS0 #XXQQ
Q8: SG @IDD →→ @IDD EXEC ER5 PACDO ¬DS0 #XXQQ
Q10: @IDD EXEC ER5 ↓↓ #XXQQ
Q11: STC SOURCE_FILE @IDD →→ @IDD ∞∞
EXEC ER5 SRCSWT ↓↓ #XXQQ
Q12: E @IDD →→ @IDD EXEC ER5 LDYNO CLRSET ¬DS0 #XXQQ
Q13: ARDEC @IDD SG →→ @IDD EXEC ER5 CLRSET SCNBAK ¬DS0 #XXQQ
Q15: ( →→ EXEC ER15 SCAN ↑NEX ¬AR0
SG EXEC ERR115 ¬XXQQ #TRAP
Q16: ARDEC E ) →→ ARDEC E EXEC ER37 SCAN ¬QA16
SG EXEC ER8 ↑QPAR ¬AR0
QA16: ARDEC E : SCAN ↑EX ¬AR0 #XXQQ
Q20: SG SG1 @IDD →→ @IDD EXEC ER5 DFENT FFPOP ENDMAC SWDLM OFFDLM ↓↓ #XXQQ
Q23: @IDD EXEC ER5 ¬DS0 #XXQQ
Q24: SG EXEC ER24 ¬FUSH
Q30: RETURN @E @SEND →→ S @SEND ∞∞
EXEC ER40 @E ECHK RESULTS ¬S9 #XXQQ
Q32: GO I EXEC UNDEC ¬QA32 #XXQQ
QA32: I →→ ILB EXEC QDEC0 ¬G2
USID: I [ →→ ARID EXEC QDEC2 SCAN ↑UARY ¬SID
I : →→ ILB : EXEC QDEC1 ¬SID
I ( →→ PCALL EXEC QDEC2 SCAN ↑EX ¬UCAL
I @SEND →→ S @SEND EXEC QDEC1 QPRDEC ¬S9
I SG →→ IVB SG EXEC QDEC1 ¬SID #TRAP
UCAL: PCALL @E ) →→ S EXEC QPARM QPRDEC SCAN ¬S9
FCALL @E ) →→ I EXEC QPARM QPRDEC SCAN ¬UXID
@CALL @E , →→ @CALL EXEC QPARM SCAN ↑EX ¬UCAL #QU63
UARY: SG ↑EX ¬URY1
URY1: ARID E , →→ ARID EXEC QSUBSC SCAN ↑EX ¬URY1
ARID E ] →→ IVB EXEC QSUBSC QARDEC SCAN ↓↓ #QU62
MUMBLE I[ at SID implies either a subscripted array variable or a list
replacement statement, which, because this is the first use of the
list, must have an argument of one. I[ at SID could be a subscripted
array, set, string, or list. However, since this is the first use of
the variable, the programmer must have intended to use its intialized
values. Thus, he could have only intended the use of an array, since
such use of the others (when declared) leads to runtime errors;
QRC2: PDEC SG EXEC RCCERR ENDRC ¬DS0
QRC1: SG EXEC RCCERR ¬FUSH
QRP1: SG EXEC RCPERR ¬FUSH
MUMBLE More error productions;
Q34: S ) →→ S EXEC ER37 SCAN ¬S9
DOL S SG →→ EXEC ER33 SCAN ¬S9
S ELSE →→ S ; EXEC ERR125 ¬S9
S SG →→ S ; EXEC ER5 SCNBAK ¬S9 #XXQQ
Q35: I @C1 →→ IAR @C1 EXEC ER35 ¬MS #XXQQ
Q36: [ →→ EXEC ER15 SCAN ¬EX
SG EXEC ER36 ¬EX
Q38: SG EXEC ER38 ¬FUSH
Q39: SG EXEC ER39 ¬FUSH
Q41: ) →→ EXEC ER37 SCAN ¬EX1
SG EXEC ER41 ¬FUSH
Q42: @IARY ( →→ ARID EXEC ER15 ARYIDX SCAN ↑ARY ¬XID #XXQQ
UXID: IP @IN I @SEND →→ IP @IN IST @SEND ∞∞
EXEC QDEC1 ¬XID
LDAT I ) →→ LDAT ITV ) EXEC QDEC1 ¬XID
DATUM I ) →→ DATUM ITV ) ∞∞
EXEC QDEC1 ¬XID
I @ASOP →→ ITV @ASOP EXEC QDEC1 ¬XID
I ≡ →→ ITV ≡ EXEC QDEC1 ¬XID
≡ I SG →→ ≡ ITV SG EXEC QDEC1 ¬XID
@SIP I , →→ @SIP ITV , EXEC QDEC1 ¬XID
I [ →→ ARID EXEC QDEC2 SCAN ↑UARY ¬XID
I ( →→ FCALL EXEC QDEC2 SCAN ↑EX ¬UCAL
I SG →→ IVB SG EXEC QDEC1 ¬XID #TRAP
Q43: NEW @E SG →→ IP EXEC ER40 NEWART SCNBAK SCAN ¬IP2 #XXQQ
QRFI: REF_ITEM @E SG →→ IP EXEC ER40 @E ECHK ∞∞
RFIMAK SCNBAK SCAN ¬IP2 #XXQQ
Q48: @SIP SG →→ @SIP } EXEC ER48 SCNBAK ¬SPP1 #XXQQ
Q48: @SIP SG →→ @SIP } EXEC ER48 SCNBAK ¬SPP1 #XXQQ
Q485: I EXEC UNDEC ¬QQA8 #XXQQ
QQA8: I →→ ITV EXEC QDEC0 SCAN ¬FRC1 #XXQQ
Q486: I EXEC UNDEC ¬QQA6 #XXQQ
QQA6: I →→ ITV EXEC QDEC0 ¬FRD1 #XXQQ
Q50: CRAP BE DO →→ TR EXEC ER40 FRBOL SCAN ¬FRG #XXQQ
Q51: FOREACH TR ) →→ FOREACH TR EXEC ER37 SCAN ¬FRG #XXQQ
Q52: SG EXEC ER8 ↑QPAR ¬LSB1
Q53: SG EXEC ER8 ↑QPAR ¬LSB2
Q55: SG EXEC ER8 ↑QPAR ¬PTII
Q57: SG EXEC ER8 ↑QPAR ¬REP0
Q59: SG EXEC ER59 ¬FUSH
Q60: SG EXEC ER8 ↑QPAR ¬QA60
QA60: @E @NXT EXEC @NXT WAIT SCAN ↑NEX2 ¬FOR1 #FOR1
Q61: @E ) →→ @E EXEC ER37 SCAN ¬STO
LHS @E SG →→ S ; EXEC ER5 @E STORE SCNBAK ¬S9
@ISTO ↔ @E SG →→ S ; EXEC ER5 @E SWPR SCNBAK ¬S9
SG EXEC ER8 ↑QPAR ¬STO
Q62: SG EXEC ER8 ↑QPAR ¬QA62
QA62: ARID E , ¬ARY1
ARID E ] ¬ARY1
ARID E SG →→ I EXEC ERR108 SUBSCR TYPAR SCNBAK SCAN ↓↓ #FUSH
QU62: SG EXEC ER8 ↑QPAR ¬URY1
Q63: , EXEC ER8 ↑QPAR ¬PARM
PCALL @E SG →→ S SG EXEC @E ECHK CALARG ISUCAL PRST ER40 ¬S9
FCALL @E SG →→ P EXEC @E ECHK CALARG ISUCAL TYPR1 ER40 SCNBAK ∞∞
SCAN ¬PAM2 #XXQQ
QU63: , EXEC ER8 ↑QPAR ¬UCAL #XXQQ
Q64: SG EXEC ER8 ↑QPAR ¬IFQ
Q65: SG EXEC ER8 ↑QPAR ¬CSES
Q66: SG EXEC ER66 ¬FUSH
Q67: , EXEC ER8 ↑QPAR ¬CAS3
CASEX @E SG →→ @E EXEC @E CASE2 CASE3 ER40 SCNBAK SCAN ¬ETYP #XXQQ
Q68: SG EXEC ER68 ¬FUSH
Q69: SG EXEC ER8 ↑QPAR ¬EIF
Q70: SG EXEC ER8 ↑QPAR ¬EIF1
Q71: SG EXEC ER8 ↑QPR1 ¬EIF2
Q72: SG EXEC ER8 ↑QPAR ¬RFR2
Q73: SG EXEC ER8 ↑QPAR ¬WHG
Q74: AE SG →→ S SG EXEC ER37 DELT ¬S9 #XXQQ
Q75: SG EXEC ER8 ↑QPAR ¬MMX1
Q75.5: SG EXEC ER8 ↑QPAR ¬MMX5
Q76: , EXEC ER8 ↑QPAR ¬RTP
@E ) →→ @E EXEC ER37 SCAN ¬RTP #XXQQ
Q78: SG EXEC ER8 ↑QPR1 ¬ESTO
Q80: SG EXEC ER8 ↑QPAR ¬QA80
QA80: @E @NXT EXEC @NXT WAIT SCAN ↑NEX2 ¬BSTR #BSTR
Q81: @E ) →→ @E EXEC ER37 SCAN ¬DOLS
DOL S UNTIL BE SG →→ S SG ∞∞
EXEC ER40 DOUNT KOUNT1 ¬S9
SG EXEC ER8 ↑QPAR ¬DOLS
Q92: SG EXEC ER8 ↑QPAR ¬%BP2
Q97: SG EXEC ER8 ↑QPAR ¬FK1
Q98: SG EXEC ER8 ↑QPAR ¬FK5
Q99: SG EXEC ER8 ↑QPAR ¬%EV3
Q100: SG EXEC ER8 ↑QPAR ¬%EV5
Q101: SG EXEC ER8 ↑QPAR ¬%CS2
Q102: SG EXEC ER8 ↑QPAR ¬%CS3
Q103: SG EXEC ER8 ↑QPR1 ¬%CS4
Q104: SG EXEC ER8 ↑QPAR ¬%IR2
Q105: SG EXEC ER8 ↑QPR1 ¬%IR3
Q106: ( EXEC ERR109 ↑Z1 ¬XID #XXQQ
Q107: SG EXEC ERR110 ¬XXQQ
Q108: SG EXEC ERR111 ¬XXQQ
Q109: BIND SG1 SG2 →→ SG1 SG2 EXEC ERR112 ¬EX1 #TRAP
Q110: SG EXEC ERR113 ¬XXQQ
Q111: SG EXEC ERR114 ¬XXQQ
QDPS: SG ¬XXQQ
Q112: SG EXEC ERR116 ¬XXQQ
Q113: SG EXEC ERR117 ¬XXQQ
Q114: SG EXEC ERR118 ¬XXQQ
Q115: SG EXEC ERR119 ¬XXQQ
Q116: SG EXEC ERR120 ¬XXQQ
Q117: SG →→ EXEC ERR121 PRESUME ¬Q117
Q118: SG EXEC ERR122 MACON ¬XXQQ
Q119: SG EXEC ERR123 ASGOFF ¬XXQQ
Q120: SG EXEC ERR124 ASGOFF ¬XXQQ
Z1: STC ( ) →→ STC SCAN ↓↓
( ) →→ SCAN ¬Z1
( SCAN ¬Z1
SG →→ SCAN ¬Z1
TRAP: SG EXEC ERTRAP ¬FUSH
<END>
β